<?php defined('SYSPATH') or die('No direct script access.');

class Model_Mailer
{   
    protected static $_default_from_email = 'support@teamdesk.ru';
   
    public static function send_mail($to, $from, $subject, $html, $attachments = array())
    {
        $user = 'akazorin@gmail.com';
        $password = '1V7zWAj19ElJPf0pw0lZMQ';
        
        /*$smtp = new Library_Smtp('smtp.mandrillapp.com', $from, $user, $password, 587);
        $headers  = "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=utf-8\r\n";   // кодировка письма
        $headers .= "From: <{$from}>\r\n";                          // от кого письмо
        $result   = $smtp->send($to, $subject, $html, $headers);    // отправляем письмо  */
        
        $smtp = new Library_MailSender();
        $smtp->smtp_on('smtp.mandrillapp.com', $user, $password, 587);
        
        $smtp->From($from);             // от кого отправляется почта 
        $smtp->To($to);                 // кому адресованно
        $smtp->Subject($subject);
        $smtp->Body($html, 'html');
        if (count($attachments)) {
            foreach ($attachments as $attachment) {
                $finfo = finfo_open(FILEINFO_MIME_TYPE);
                $mime_type = finfo_file($finfo, $attachment['filePath']);
                finfo_close($finfo);
                
                $smtp->Attach($attachment['filePath'], $attachment['name'], $mime_type);    
            }    
        }
        $smtp->Send();
    }
    
    public static function invite_user(Model_User $user)
    {
        $current_user = Model_Auth::instance()->get_user();
        $url = Helper_Admin::user_invite_url($user, true);
        
        $subject = 'Добро пожаловать в TeamDesk';
        
        $html = "<p>{$current_user->name} создал аккаунт в TeamDesk для вас. Присоединяйтесь!</p>
<p>Для продолжения <a href={$url}>создайте пароль</a>.</p>"; 

        self::send_mail($user->email, self::$_default_from_email, $subject, $html);   
    }
    
    public static function register_company(Model_Company $company, Model_User $user)
    {
        
        $subject = 'Добро пожаловать в TeamDesk';
        
        $html = "<p>Поздравляем с успешной регистрацией в TeamDesk!</p>

<p>Мы надеемся, что с нашей системой вы сможете организовать службу поддержки вашей мечты. Для работы с сервисом не нужно ничего устанавливать и настраивать, все уже готово и доступно через интернет. Осталось только начать использовать!</p>

<p>Ваши данные для входа<br />
Логин: {$user->email}<br />
Аккаунт: {$company->domain}.teamdesk.ru</p>

<p>Если у вас остались вопросы, пишите на support@teamdesk.ru.<br />
Команда TeamDesk</p>"; 

        self::send_mail($user->email, self::$_default_from_email, $subject, $html);   
    }
    
    public static function new_ticket_notification(Model_Ticket $ticket, Model_User $user, $mailbox = null)
    {
        $client_name = $ticket->client_name;
        if (!$client_name) {
            $client_name = $ticket->email;   
        }
        if (!$mailbox) {
            $mailbox = ORM::factory('mailbox', $ticket->mailbox_id);
        }
        $company = ORM::factory('company', $mailbox->company_id);
        $url = 'http://'.$company->domain.'.teamdesk.ru'.Helper_Admin::ticket_url($ticket);
        
        $subject = '[#'.$ticket->number.'] '.$client_name.' создал тикет в TeamDesk';
        
        $html = "<p>{$client_name} создал тикет \"{$ticket->subject}\".</p>
<p>Чтобы ответить на него, перейдите по ссылке <a href=\"{$url}\">{$url}</a>.</p>"; 

        self::send_mail($user->email, self::$_default_from_email, $subject, $html);   
    }
    
    public static function assigned_notification(Model_Ticket $ticket, Model_User $user)
    {
        $current_user = Model_Auth::instance()->get_user();
        $mailbox = ORM::factory('mailbox', $ticket->mailbox_id);
        $company = ORM::factory('company', $mailbox->company_id);
        $url = 'http://'.$company->domain.'.teamdesk.ru'.Helper_Admin::ticket_url($ticket);
        
        $subject = '[#'.$ticket->number.'] '.$current_user->name.' назначил тикет на вас';
        
        $html = "<p>{$current_user->name} назначил тикет \"{$ticket->subject}\" на вас.</p>
<p>Чтобы ознакомиться с ним, перейдите по ссылке <a href=\"{$url}\">{$url}</a>.</p>"; 

        self::send_mail($user->email, self::$_default_from_email, $subject, $html);   
    }
    
    public static function new_reply_notification(Model_Reply $reply, Model_Ticket $ticket, Model_User $user, $mailbox = null)
    {
        $client_name = $reply->client_name;
        if (!$client_name) {
            $client_name = $reply->email;   
        }
        if (!$mailbox) {
            $mailbox = ORM::factory('mailbox', $ticket->mailbox_id);
        }
        $company = ORM::factory('company', $mailbox->company_id);
        $url = 'http://'.$company->domain.'.teamdesk.ru'.Helper_Admin::ticket_url($ticket);
        
        $subject = '[#'.$ticket->number.'] '.$client_name.' ответил в тикете в TeamDesk';
        
        $html = "<p>{$client_name} ответил в тикете \"{$ticket->subject}\".</p>
<p>Чтобы ознакомиться с ответом, перейдите по ссылке <a href=\"{$url}\">{$url}</a>.</p>"; 

        self::send_mail($user->email, self::$_default_from_email, $subject, $html);      
    }
    
    public static function new_ticket_autoreply(Model_Ticket $ticket, Model_Mailbox $mailbox)
    {
        $autoreply = ORM::factory('autoreply', $mailbox->id);
        
        $subject = $autoreply->subject;
        $subject = str_replace('{%subject%}', $ticket->subject, $subject); 
        
        $html = $autoreply->text;
        
        self::send_mail($ticket->email, self::$_default_from_email, $subject, $html);        
    }
}
